package fnsvr

import (
	"encoding/json"
	"strconv"
)

func StringToFloat64(str string) (float64, error) {
	if len(str) == 0 {
		return 0, nil
	}

	num, err := strconv.ParseFloat(str, 64)
	if err != nil {
		return 0, err
	}

	return num, nil
}

func StringToInt(str string) (int, error) {
	if len(str) == 0 {
		return 0, nil
	}

	num, err := strconv.Atoi(str)
	if err != nil {
		return 0, err
	}

	return num, nil
}

func StringToInt64(str string) (int64, error) {
	if len(str) == 0 {
		return 0, nil
	}

	num, err := strconv.ParseInt(str, 10, 64)
	if err != nil {
		return 0, err
	}

	return num, nil
}

func StringToJson(str string, outV any) error {
	//数据空白时，直接返回，意思是使用json格式的0值
	if len(str) == 0 {
		return nil
	}

	err := json.Unmarshal([]byte(str), outV)
	return err
}
